package mil.af.amc.adpetracker.dao;

import mil.af.amc.adpetracker.model.User;
import mil.af.amc.adpetracker.model.Organization;

import java.util.Collection;
import java.util.List;

/**
 * Interface for UserDao implementations
 */
public interface UserDao extends GenericDao<User> {

    User getByUsername(String username);

    Collection loadAll();

    List<User> getAllByOrganization(Organization o);

    /**
     * Get all users in a given Organization with no assigned equipment
     *
     * @param o     an Organization that the users to return belong to
     * @return      a List of Users with no assigned equipment
     */
    List<User> getUsersWithNoAssignedEquipment(Organization o);

    /**
     * Get all users in a given organization with no assigned CPU
     * 
     * @param o
     * @return
     */
    List<User> getUsersWithNoCpu(Organization o);
}
